import functools

from flask import current_app
from flask import g
from flask import session

from info.models import User


def do_index_class(index):
    if index==1:
        return "first"
    elif index==2:
        return "second"
    elif index ==3:
        return "third"

    return ""


#定义装饰器 使用g变量保存user的状态
#@functools.wraps() 也是一个装饰器 功能是让被装饰的函数名字不改变
def user_login_data(f):
    @functools.wraps(f)
    def wrapper(*args,**kwargs):
        # 判断用户是否登陆 取出session中保存的id
        user_id = session.get('user_id', None)
        user = None  # 这一步是为了没进入下面判断准备
        # 的，如果用户没有登陆请求首页 不会有session也就是说user_id = None
        # 进入不了判断  在data 但是字典那一步还需要user这个对象 所有需要bauser设置一个控值
        # 判断取到的id
        if user_id:
            try:
                # 获取此user_id的user对象
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)
        # 使用g的全局变量保存user的状态
        g.user = user
        return f(*args,**kwargs)
    return wrapper